Personnel
Overall Objectives
Research Program
Application Domains
New Software and Platforms
New Results
Bilateral Contracts and Grants with Industry
Partnerships and Cooperations
Dissemination
Bibliography
XML PDF e-pub
PDF e-Pub


Section: New Software and Platforms

Nanvix

Keyword: Operating system

Scientific Description: Nanvix presents a similar structure to Unix System V , and it has been intentionally designed this way because it is adopted in some successful Operating Systemes, such as Linux. Nanvix is structured in two layers. The kernel (bottom layer), seats on top of the hardware and runs in privileged mode. Its job is to (i) extend the underlying hardware so that an easier-to-program interface is exported to the higher layer, and (ii) multiplex hardware resources among several users. The userland (top layer), relies on Posix system calls exported by the kernel and it is the place where user software run in unprivileged mode.

The kernel presents a tiny monolithic architecture (7k loc), and it is structured in four subsystems: the hardware abstraction layer, the memory management system, the process manager, and the file system. The hardware abstraction layer interacts directly with the hardware and exports to the other subsystems a set of well-defined low-level routines. The job of the hardware abstraction layer is to isolate, as much as possible, all the hardware intricacies, so that the kernel can easily be ported to other compatible platforms.

The memory manager provides a flat virtual memory abstraction. It does so by having two modules working together: the paging and virtual memory allocator. The former deals with paging, keeping in memory those pages that are more frequently used, and swapping out to disk those that are not. The virtual memory allocator, on the other hand, relies on the paging module to create higher-level abstractions called memory regions, and thus enable advanced features such as shared memory regions, on-demand loading and lazy coping.

The process manager handles creation, termination, scheduling, synchronization and communication of processes. Processes are single-threaded entities and are created on demand, either by the system itself or the user. Scheduling is based on preemption, and in userland it happens whenever a process runs out of quantum or blocks awaiting for a resource. In kernel land, processes run in nonpreemptive mode and scheduling occurs when a processes voluntarily foes to sleep. In addition, the process manager exports inter-process communication facilities, such as Posix pipes and shared memory regions.

The file system provides a uniform interface for dealing with hardware resources. It extends the device driver interface and creates on top of it the file abstraction. Files can be accessed through a unique pathname, and may be shared among several processes. The Nanvix file system is compatible with the one present in Minix, it adopts an hierarchical inode structure, and features mounting points and disk block caching.

Investigations on Nanvix concern to a joint collaboration research effort between the CORSE Team (Inria - FRANCE) and CArT (PUC Minas - Brazil). More precisely, a port of Nanvix to low-power embedded manycores is ongoing, and it consists on the thesis subject of a cotutella student between the two aforementioned research teams.

Functional Description: Nanvix is an Operating System that we designed from scratch to address growing interested on research and education. It originally targets x86-based architectures and features virtual-memory based on paging, a hierarchical Unix file system based on inodes, a uniform device driver interface, and a preemptive priority-based scheduler.

We are currently extending Nanvix to provide a portable OS targetting multiple manycore platforms through the PhD of Pedro Henrique Penna.